package InterviewTest.q0202_kthToLast;
import CommonClass.Common.ListNode;
public class Solution_2 {
    int size;

    // 巧妙的递归 该递归会首先找到最后一个节点
    // 然后直到倒数第k个节点之前都返回0 到第k个节点开始就一直返回k节点的值
    // 所以最后能够得到倒数第k个节点值
    public int kthToLast(ListNode head, int k) {
        //边界条件判断
        if (head == null)
            return 0;
        int val = kthToLast(head.next, k);
        ++size;
        //从后面数结点数小于k，返回空
        if (size < k) {
            return 0;
        } else if (size == k) {
            //从后面数访问结点等于k，直接返回传递的结点k即可
            return head.val;
        } else {
            //从后面数访问的结点大于k，说明我们已经找到了，
            //直接返回node即可
            return val;
        }
    }
}
